/*
 * 文件名：ShopInfo.java
 * 版权：Copyright by www.huawei.com
 * 描述：
 * 修改人：zhangshaohua
 * 修改时间：2016年4月15日
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package com.zcsy.manage.persistence.base;

import java.util.List;
import java.util.Map;

import com.zcsy.manage.model.base.BusinessShopAccount;
import com.zcsy.manage.model.base.CellShopVo;
import com.zcsy.manage.model.base.ShopIdAndShopName;
import com.zcsy.manage.model.base.ShopInfo;
import com.zcsy.manage.model.base.ShopInfoView;

/**
 * 
 * @Title: ShopInfo.java
 * @Package： com.zcsy.manage.persistence.base 
 * @Description: 商铺信息持久层
 * @author zhangsh zsh3384027@gmail.com
 * @Copyright: 2016 武汉恒数利通技术有限公司 All rights reserved.
 * @date 2016年4月15日
 * @version 1.0
 * @see JDK1.8.0_45
 * @since
 */
public interface ShopInfoDao {

	/**
	 * 
	 * @Description 插入商铺信息
	 * @param shopInfo
	 * @return 1：插入成功;0：插入失败
	 * @author zhangsh zsh3384027@gmail.com
	 * @date 2016年4月15日
	 * @see
	 */
	int insert(ShopInfo shopInfo);
	
	/**
	 * 
	 * @Description 更新商铺信息
	 * @param shopInfo
	 * @return 1：插入成功;0：插入失败
	 * @author zhangsh zsh3384027@gmail.com
	 * @date 2016年4月15日
	 * @see
	 */
	int update(ShopInfo shopInfo);
	
	/**
	 * 
	 * @Description 删除根据关键字ID
	 * @param id
	 * @return 1：插入成功;0：插入失败
	 * @author zhangsh zsh3384027@gmail.com
	 * @date 2016年4月15日
	 * @see
	 */
	int deleteByPrimaryKey(String id);
	
	/**
	 * 
	 * @Description 通过id 获取商铺信息
	 * @param id
	 * @return 
	 * @author zhangsh zsh3384027@gmail.com
	 * @date 2016年4月15日
	 * @see
	 */
	ShopInfo selectByPrimaryKey(String id);
	
	/**
	 * 
	 * @Description 获取商铺列表通过关键字
	 * @param shopInfo
	 * @return 
	 * @author zhangsh zsh3384027@gmail.com
	 * @date 2016年4月15日
	 * @see
	 */
	List<ShopInfoView> selectByKeyword(ShopInfo shopInfo);
	
	/**
     * 
     * @Description 获取商铺列表通过店铺名（模糊查询）
     * @param shopInfo
     * @return 
     * @author yangfan 373188993@qq.com
     * @date 2016年7月10日
     * @see
     */
    List<ShopInfo> getShopList(ShopInfo shopInfo);
	
	/**
	 * 
	 * @Description 获取所有的商铺列表
	 * @return 
	 * @author zhangsh zsh3384027@gmail.com
	 * @date 2016年4月15日
	 * @see
	 */
	List<ShopInfo> getAllShopInfo();
	
	/**
	 * @Description 更新店铺状态
	 * @param shopInfo 店铺对象
	 * @return 1：成功 0：失败
	 * @author liuying 1075817474@qq.com
	 * @date 2016年6月1日
	 * @see 
	 */
	int updateShopState(ShopInfo shopInfo);
	
	
	/**
	 * @Description 根据排序增加置顶功能<br>
	 * 
	 * @param record 当前店铺对象
	 * @return 1：成功 0：失败
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月3日
	 * @see 
	 */
	int updateSort(ShopInfo record);
	
	/**
	 * @Description 根据帐户id获取小区id,小区名称，店铺id，店铺名称<br>
	 * 
	 * @param busiAccountId  商户id
	 * @return 
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年5月26日
	 * @see 
	 */
	List<Map<String, Object>> getCellIdListByBusiAccountId(String busiAccountId);
	
	/**
	 * @Description 返回省、市、小区、店铺用于生成树<br>
	 * 
	 * @param roles 已选角色Id
	 * @return 返回集合
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月13日
	 * @see 
	 */
	List<CellShopVo> getAllCellShopInfo(String[] roles);
	
	/**
	 * @Description 插入商户账号关联信息<br>
	 * 
	 * @param record 商户账号对象
	 * @return 1：成功 0:失败
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月15日
	 * @see 
	 */
	int insertShopAccount(BusinessShopAccount record);
	
	/**
	 * @Description 根据商户id删除店铺<br>
	 * 
	 * @param userId 商户id
	 * @return 
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月16日
	 * @see 
	 */
	int deleteShopByUserId(String userId);
	
	/**
	 * @Description 根据商户id查询店铺列表<br>
	 * 
	 * @param userId 商户id
	 * @return  返回该商户所拥有的店铺列表
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月16日
	 * @see 
	 */
	List<String> getShopIdsByUserId(String userId);
	
	/**
	 * @Description 根据商户id查询店铺列表<br>
	 * 
	 * @param userId 商户id
	 * @return  返回该商户所拥有的店铺id和name
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年6月16日
	 * @see 
	 */
	List<ShopIdAndShopName> getShopInfosByUserId(String userId);
	
	/**
	 * @Description 根据小区id和店铺分类id查询店铺列表<br>
	 * 
	 * @param map
	 *        cellId:小区id
	 *        categoryId:店铺分类id
	 * @return 返回店铺列表
	 * @author caiyinli 13277030520@163.com
	 * @date 2016年8月3日
	 * @see 
	 */
	List<ShopInfo> getListByCellIdAndCategoryId(Map map);
	
	 
    /**
     * 
     * @Description 根据店铺名搜索店铺<br>
     * 
     * @param map name 店铺名
     *            cellId 小区id
     * @return 
     * @author lilan 1063972142@qq.com
     * @date 2016年8月5日
     */
    List<ShopInfo> getShopInfoByName(Map map);
    
    /**
     * @Description 根据店铺名搜索店铺<br>
     * @param name 店铺名
     * @return 
     * @author lilan 1063972142@qq.com 
     * @date 2016年8月5日
     */      
    List<String> getSelfStoreIdBycellId(String cellId);
    
    /**
     * @Description 根据根据广告位分类id和cellId获取当前小区热门店铺信息 <br>
     * @param map 
     * @return  List<ShopInfo>
     * @author yangfan 373188993@qq.com
     * @date 2016年8月29日
     */
    List<ShopInfo> selectShopInfoByAdCategoryId(Map<String, Object> map);
    
    /**
     * @Description 获取当前小区的状态正常的店铺id和名称
     * @param cellId 小区id
     * @return 店铺列表
     * @author liuying 1075817474@qq.com
     * @date 2016年9月7日
     * @see 
     */
    List<ShopInfo> getStoreByCellId(String cellId);
    
    List<ShopInfoView> selectByKeywords(ShopInfo shopInfo);
    
    Integer  countApply(String cellId); 
}
